#pragma once
#ifndef SMPPMESSAGESUBMISSIONRESPONSETLVS_HPP
#define SMPPMESSAGESUBMISSIONRESPONSETLVS_HPP

#include "SMPPAdditionalStatusInfoText.hpp"
#include "SMPPDeliveryFailureReason.hpp"
#include "SMPPDpfResult.hpp"
#include "SMPPNetworkErrorCode.hpp"
#include "SMPPCongestionState.hpp"

namespace smpp{
namespace pdu{

class SMPP_DLLPRFX MessageSubmissionResponseTLVs{
protected:
	AdditionalStatusInfoText *_AdditionalStatusInfoText;
	DeliveryFailureReason *_DeliveryFailureReason;
	DpfResult *_DpfResult;
	NetworkErrorCode *_NetworkErrorCode;
	CongestionState *_CongestionState;
public:
	MessageSubmissionResponseTLVs(
		const AdditionalStatusInfoText *nAdditionalStatusInfoText = 0,
		const DeliveryFailureReason *nDeliveryFailureReason = 0,
		const DpfResult *nDpfResult = 0,
		const NetworkErrorCode *nNetworkErrorCode = 0,
		const CongestionState *nCongestionState = 0);

	MessageSubmissionResponseTLVs(
		const MessageSubmissionResponseTLVs &);

	~MessageSubmissionResponseTLVs();

	void setAdditionalStatusInfoText(const AdditionalStatusInfoText *);

	const AdditionalStatusInfoText *
		getAdditionalStatusInfoText() const;

	void setDeliveryFailureReason(const DeliveryFailureReason *);

	const DeliveryFailureReason *getDeliveryFailureReason() const;

	void setDpfResult(const DpfResult *);

	const DpfResult *getDpfResult() const;

	void setNetworkErrorCode(const NetworkErrorCode *);

	const NetworkErrorCode *getNetworkErrorCode() const;	

	void setCongestionState(const CongestionState *);

	const CongestionState *getCongestionState() const;	

	const quint16 getLength() const;
};

}
}

#endif
